package classes;


public class Clientes {
    private String[][] usuarios;
    private String[][] cabecalho;
    private int coluna = 3;
    private int cont = 0;
    private Dados dados;
    
    public Clientes(){
        usuarios = new String[1][coluna];
        cabecalho = new String[1][4];
        
        cabecalho[0][0] = "";
        cabecalho[0][1] = "Nome";
        cabecalho[0][2] = "CPF";
        cabecalho[0][3] = "Telefone";
        
    }
    
    public String[][] getUsuarios(){
        return usuarios;
    }
    
    public String[][] getCabecalho(){
        return cabecalho;
    }
    
    public String getLinhaCPF(int pos){
        return usuarios[pos][coluna];
    }
    
    public Dados getCliente(int pos){
        if(pos >= 0 && pos < cont){
            return dados = new Dados(usuarios[pos][0], usuarios[pos][1], usuarios[pos][2]);
        }
        return null;
    }
    
    public int getContContatos(){
        return cont;
    }
    
    public int posDados(String cpf){
        for(int i = 0; i < usuarios.length; i++){
            if(usuarios[i][0].equals(cpf)){
                return i;
            }
        }
        return -1;
    }
    
    
    public boolean cadastraCliente(Dados dados){
        
        if(cont < 15){
            aumentaArray();
            usuarios[cont][0] = dados.getNome();
            usuarios[cont][1] = dados.getCpf();
            usuarios[cont][2] = dados.getTelefone();
            cont++;
            return true;
        }
        return false;
    }
    
    public boolean removeCliente(String cpf){
        int j = 0;
        boolean retorno = false;
        String[][] temp = new String[usuarios.length-1][coluna];
        for(int i = 0; i < usuarios.length; i++){
            if(!usuarios[i][1].equalsIgnoreCase(cpf)){
                for(int m = 0; m < usuarios[i].length; m++){ 
                    temp[j][m] = usuarios[i][m];
                }
                j++;
            }else{
                retorno = true;
            }
        }
        
        if(cont != 1){
            usuarios = new String[temp.length][coluna];
            usuarios = temp;
            
        }else{
            usuarios = new String[1][coluna];
        }
        cont--;
        return retorno;
    }
    
    private void nenhumDado(){
        usuarios = new String[1][coluna];
    }
    
    public boolean editarCliente(Dados dados){
        
        for(int i = 0; i < cont; i++){
            if(dados.getCpf().equalsIgnoreCase(usuarios[i][1])){
                
                usuarios[i][0] = dados.getNome();
                usuarios[i][1] = dados.getCpf();
                usuarios[i][2] = dados.getTelefone();
                return true;
            }
            
        }
        return false;
        
    }
    
    private void aumentaArray(){
        String temp[][] = usuarios;
        usuarios = new String[cont+1][coluna];
         
        for(int i = 0; i < temp.length; i++){
            for(int j = 0; j < temp[0].length; j++){
                usuarios[i][j] = temp[i][j];
            }
        }
    }
    //vai para o primeiro
    public int first(){
        if(cont > 0){
            return 0;
        }
        return -1;
    }
    //vai para o ultimo
    public int last(){
        if(cont > 0){
            return cont-1;
        }
        return -1;
    }

}
